<?php

/*
 * Condições do teste:
 *
 * - id_bolao=4, está associado com algum bolao.
 * E que o Usuário Fabio Já APOSTOU no respectivo bolão
 * - O usuário fabiofeliciano@di.ufpb.br não possuí bolitos para apostar
 *
 *
*/

//Falta editar os valores para o Banco de Dados

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
require_once 'Conexao.php';

class TesteEditarApostarBolao extends PHPUnit_Extensions_SeleniumTestCase {

    //---------------------------
    protected $receivedCon;
    protected $result;
   
    //Supoe que a insersao jah tah feita
    /*protected $insercaoBD = "INSERT INTO bolao(id, id_jogo, nome, email_criador, importante)
        VALUES(4, 1, NULL, NULL, 0)";
    protected $remocaoBD = "DELETE FROM bolao
        WHERE id=4";*/

    protected function setUp() {

        /*$this->receivedCon = new Conexao();
        $this->receivedCon->conect();
        echo "conexao bem sucedida.\n";

        $this->result = $this->receivedCon->query($this->insercaoBD);
        echo "Operacao no banco de dados bem sucedida.\n";*/

        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://localhost/");
    }

    protected function tearDown() {

       // remove o bolão
        /*$this->receivedCon->query($this->remocaoBD);
        echo "Banco deletado com sucesso.\n";
        $this->receivedCon->close();
        echo "Conexao finalizada com sucesso.\n\n";*/

    }

    public function testBolaoNaoExistente() {
        $this->open("/aposta/editar");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        $this->open("/aposta/editar?id_bolao=100");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Bolão Inexistente! Procure
                um bolão válido para apostar.!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testIdBolaoVazio() {
        $this->open("/aposta/editar");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Bolão Inexistente! Procure
                um bolão válido para apostar."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testApostaComSucesso() {
        
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");
        //$this->setSleep(10);
        $this->type("gols_time_a", "2");
        $this->type("gols_time_b", "4");
        //$this->setSleep(10);
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Resultado registrado no Banco de Dados!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

     public function testInsercaoDeCamposNegativos() {
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");

        $this->type("gols_time_a", "-2");
        $this->type("gols_time_b", "-4");
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Somente números são aceitos"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testInsercaoDeCamposEmBrancos() {
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");

        $this->type("gols_time_a", " ");
        $this->type("gols_time_b", " ");
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("O valor é obrigatório
                e não pode estar vazio"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testInsercaoDeCamposSuperiorDez() {
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");

        $this->type("gols_time_a", "20");
        $this->type("gols_time_b", "40");
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("não está entre '0' e '10',
                inclusivamente"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testUsuarioSemBolitos() {
        
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        $this->open("/aposta/editar?id_bolao=4");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Você não tem bolitos suficientes"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testInsercaoDeCaracteresNaoNumericos() {
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");

        $this->type("gols_time_a", "rt");
        $this->type("gols_time_b", "5t");
        $this->click("submit");


        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Um erro ocorreu durante
                o processamento desta transação:"));
            $this->setSleep(10);
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testInsercaoComCamposEmBranco() {
        $this->open("/aposta/editar?id_bolao=4");

        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");
        $this->waitForPageToLoad("30000");

        //$this->open("/aposta/editar?id_bolao=4");

        $this->type("gols_time_a", " ");
        $this->type("gols_time_b", " ");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Um erro ocorreu durante
                o processamento desta transação:"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    /*public function testApostaJaCadastrada() {

        //Falta implementar


    }*/

}
?>
